package cn.lingyangwl.agile.auth.model.rqrs.third;

import cn.lingyangwl.agile.auth.oauth2.model.RegisteredClient;
import cn.lingyangwl.agile.auth.third.BaseThirdAuth;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;

/**
 * 获取社交授权地址请求
 *
 * @author shenguangyang
 */
@Data
public class AuthUrlGetReq {
    /**
     * 登录成功三方回调当前系统之后, 当前系统获取授权信息, 然后会重定向到 backUrl 地址
     * <br/>
     * 从哪里发起授权就回调哪里去
     */
    protected String backUrl;

    /**
     * 支持自定义授权平台的 scope 内容, 如果不传就使用代码中定义的, 具体是否生效需要看 {@link BaseThirdAuth}
     * 子类的实现
     *
     * 微信公众号授权例子:
     * 1. 进入页面要求静默登录(snsapi_base), 不弹出授权页面, 但是只能获取openId
     * 2. 调用login接口, 如果openId没有绑定本地用户, 则为了获取详细用户数据以便后续进行绑定, 需要再次授权
     * 3. scope = snsapi_userinfo, 再次发起授权, 这时会弹出授权页面, 且需要用户统一之后才会获取到详细信息
     * 4. 进行用户绑定操作
     *
     * 只有用户第一次使用本系统上边完整步骤, 之后只需要静默登录即可获取绑定绑定的用户信息
     */
    protected String scope;

    /**
     * 客户端
     */
    @JsonIgnore
    private RegisteredClient client;
}
